home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / lib / calc / help / assoc next >
Text File  |  1995-07-17  |  3KB  |  56 lines

  1. Using associations
  2.  
  3.     Associations are special values that act like matrices, except
  4.     that they are more general (and slower) than normal matrices.
  5.     Unlike matrices, associations can be indexed by arbitrary values.
  6.     For example, if 'val' was an association, you could do the following:
  7.  
  8.         val['hello'] = 11;
  9.         val[4.5] = val['hello'];
  10.         print val[9/2];
  11.  
  12.     and 11 would be printed.
  13.  
  14.     Associations are created by the 'assoc' function.  It takes no
  15.     arguments, and simply returns an empty association.  You can then
  16.     insert elements into the association by indexing the returned value
  17.     as shown above.
  18.  
  19.     Associations are multi-dimensional.  You can index them using one to
  20.     four dimensions as desired, and the elements with different numbers
  21.     of dimensions will remain separated.  For example, 'val[3]' and
  22.     'val[3,0]' can both be used in the same association and will be
  23.     distinct elements.
  24.  
  25.     When references are made to undefined elements of an association,
  26.     a null value is simply returned.  Therefore no bounds errors can
  27.     occur when indexing an association.  Assignments of a null value
  28.     to an element of an association does not delete the element, but
  29.     a later reference to that element will return the null value as if
  30.     the element was undefined.  Elements with null values are implicitly
  31.     created on certain other operations which require an address to be
  32.     taken, such as the += operator and using & in a function call.
  33.  
  34.     The elements of an association are stored in a hash table for
  35.     quick access.  The index values are hashed to select the correct
  36.     hash chain for a small sequential search for the element.  The hash
  37.     table will be resized as necessary as the number of entries in
  38.     the association becomes larger.
  39.  
  40.     The size function returns the number of elements in an association.
  41.     This size will include elements with null values.
  42.  
  43.     Double bracket indexing can be used for associations to walk through
  44.     the elements of the association.  The order that the elements are
  45.     returned in as the index increases is essentially random.  Any
  46.     change made to the association can reorder the elements, this making
  47.     a sequential scan through the elements difficult.
  48.  
  49.     The search and rsearch functions can search for an element in an
  50.     association which has the specified value.  They return the index
  51.     of the found element, or a NULL value if the value was not found.
  52.  
  53.     Associations can be copied by an assignment, and can be compared
  54.     for equality.  But no other operations on associations have meaning,
  55.     and are illegal.
  56.